﻿using HCQ2_Model.Data;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HCQ2_Model.Pay
{
    /// <summary>
    /// 更新备货状态请求参数
    /// </summary>
    public class UpdateStorageStatusParams: PayUser, IValidatableObject
    {
        /// <summary>
        /// 父订单号；订单号和父订单号不能同时为空
        /// </summary>
        public string ParentOrderCode { get; set; }

        /// <summary>
        /// 订单号；订单号和父订单号不能同时为空，若都不为空，则优先 OrderCode 
        /// </summary>        
        public string OrderCode { get; set; }

        /// <summary>
        /// 【必填】备货状态（0=待备货（默认值）、1=备货中、2=备货完成、3=已发货，0-100）<br/>        
        /// </summary>
        /// <remarks>
        /// 修改记录：<br/>
        /// 2021-11-11：老谭要求不限制，扩展到最大100，后续状态是啥我也不知道。《UpdateStorageStatus接口取消状态限制.png》
        /// </remarks>
        [Required(ErrorMessage = "备货状态不能为空")]
        [Range(0, 100, ErrorMessage = "备货状态无效，必须是：0=待备货、1=备货中、2=备货完成、3=已发货，最大到100，其中之一")]
        public int? StorageStatus { get; set; }

        /// <summary>
        /// 自定义验证
        /// </summary>
        /// <param name="validationContext"></param>
        /// <returns></returns>
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            UpdateStorageStatusParams param = validationContext.ObjectInstance as UpdateStorageStatusParams;
            if (param == null) {
                yield break;
            }
            if (string.IsNullOrWhiteSpace(param.OrderCode)
                && string.IsNullOrWhiteSpace(param.ParentOrderCode)) {
                yield return new ValidationResult("订单号和父订单号不能同时为空", new string[] { "OrderCode", "ParentOrderCode" });
            }
        }
    }
}
